import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";

//将路由以模块形式构建
import { home } from "./modules/home";  //首页
import { permission } from "./modules/permission";//权限
import { complexForm } from "./modules/complexForm";//复杂表单
import { profile } from "./modules/profile";//个人信息
import { clipboard } from "./modules/clipboard";//个人信息
import { errorPage } from "./modules/errorPage";

/*
 * hidden: true                   如果设置为true，则项目将不显示在左侧菜单栏，默认false。
 * alwaysShow: true               如果设置为true，将始终显示根菜单，默认false
 * name:'router-name'             路由名称，使用keepAlive缓存组件时的组件名
 * meta : {
	roles: ['admin','editor']    菜单权限
	title: 'title'               菜单标题
	icon: 'svg-name'             菜单图标
	keepAlive: true              是否缓存该网页，默认为false
	affix: true                  如果设置为true，是否固定在tags视图中，默认为false
	breadcrumb: false            是否隐藏在tags中，默认false
  }
*/

/**
 * 没有权限要求的基本页面
 * 所有角色可以访问
 */
export const constantRoutes: Array<RouteRecordRaw> = [
	{
		path: "/login",
		name: "login",
		component: () => import('@/views/login/index.vue')
	},
	...errorPage,
	{
		path: '/:catchAll(.*)',
		component: () => import('@/views/redirect/index.vue')
	}
]

/**
 * 异步路由
 * 需要根据用户角色动态加载的路由
 */
export const asyncRoutes: Array<RouteRecordRaw> = [
	...home,
	...permission,
	...complexForm,
	...profile,
	...clipboard,
];

const router = createRouter({
	history: createWebHistory(`${import.meta.env.VITE_BASE_URL}`),
	routes: [...constantRoutes]
});

export default router;
